package com.bsoft.gol.hcs.specialist.service;

import com.bsoft.gol.hcs.his.bean.response.DeptLeaderListRepHisBean;
import ctd.controller.exception.ControllerException;
import ctd.util.annotation.RpcService;
import com.bsoft.gol.hcs.specialist.bean.request.PatientSearchRuleRequest;
import com.bsoft.gol.hcs.specialist.bean.response.QueryPatientSearchResultResponse;
import com.bsoft.gol.hcs.specialist.entity.PatientSearchRuleDetail;
import hcn.base.Doctor;
import hcn.service.base.qo.DoctorListByMemQo;

import java.util.List;

/**
 * @author tongtp
 * @version v0.1
 * @package specialist.service
 * @className IPatientSearchRuleExecuteService
 * @description 患者检索规则执行服务
 * @create 2021-08-06 14:10
 **/
public interface IPatientSearchRuleExecuteService {

	/**
	 * 患者检索规则执行检索
	 *
	 * @param patientSearchRuleId
	 * @return org.atag.core.base.BaseResponse
	 * @throws
	 * @author tongtp
	 * @date 2021/8/6 14:18
	 */
	@RpcService
	void doSearch(Long patientSearchRuleId) throws ControllerException;

	/**
	 * 刷新已订阅的规则病例数
	 *
	 * @param request
	 * @return org.atag.core.base.BaseResponse
	 * @throws
	 * @author tongtp
	 * @date 2021/8/11 11:23
	 */
	@RpcService
	void refreshResult(PatientSearchRuleRequest request) throws ControllerException;

	/**
	 * 获取科室负责人
	 */
	@RpcService
	List<DeptLeaderListRepHisBean.DeptLeaderHisBean> queryDeptLeaderList(DoctorListByMemQo qo) throws ControllerException;

	/**
	 * 处理订阅的患者检索规则
	 *
	 * @param
	 * @return org.atag.core.base.BaseResponse
	 * @throws
	 * @author tongtp
	 * @date 2021/8/10 21:24
	 */
	@RpcService
	void handlePatientSearchRuleForSubscribe() throws ControllerException;

	/**
	 * 查询检索或订阅的患者列表
	 *
	 * @param request
	 * @return org.atag.core.base.BaseResponse<specialist.bean.response.QueryPatientSearchResultResponse>
	 * @throws
	 * @author tongtp
	 * @date 2021/8/11 11:32
	 */
	@RpcService
	QueryPatientSearchResultResponse queryPatientSearchResult(PatientSearchRuleRequest request) throws ControllerException;

	/*自动给患者发送当天院后随访需要健康宣教消息的定时任务*/
	@RpcService
	void autoHandleHospitalHealthEducationForSubscribe()throws ControllerException;
}
